home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / yahoo / yahoohttp.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  6KB  |  127 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import urllib2
  5. import httplib
  6. from util import memoize, tag, post_xml
  7. from util.callbacks import callsback
  8. from logging import getLogger
  9. log = getLogger('yahoohttp')
  10. from traceback import print_exc
  11.  
  12. def y_webrequest(url, data, cookies):
  13.     headers = {
  14.         'Cookie': cookies['Y'] + '; ' + cookies['T'],
  15.         'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5)',
  16.         'Cache-Control': 'no-cache' }
  17.     req = urllib2.Request(url, data, headers)
  18.     response = urllib2.urlopen(req)
  19.     return response.read()
  20.  
  21. _carriers = { }
  22.  
  23. def get_carrier(yahoo, sms_number, callback = None):
  24.     if sms_number in _carriers:
  25.         return callback.success(_carriers[sms_number])
  26.     
  27.     version = '8.1.0.209'
  28.     intl = 'us'
  29.     validate = tag('validate', intl = intl, version = version, qos = '0')
  30.     validate.mobile_no['msisdn'] = sms_number
  31.     validate._cdata = '\n'
  32.     
  33.     def on_response(validate):
  34.         log.info('HTTP response to get_carrier:\n%s', validate._to_xml())
  35.         status = unicode(validate.mobile_no.status)
  36.         log.info('<status> tag contents: %s', status)
  37.         if status == 'Valid':
  38.             carrier = str(validate.mobile_no.carrier)
  39.             _carriers[sms_number] = carrier
  40.             log.info('carrier for %s: %s', sms_number, carrier)
  41.             return callback.success(carrier)
  42.         elif status == 'Unknown':
  43.             log.critical('unknown carrier for %s', sms_number)
  44.             return callback.error()
  45.         else:
  46.             log.critical('unknown XML returned from mobile carrier lookup service')
  47.             return callback.error()
  48.  
  49.     
  50.     def on_error(validate):
  51.         log.critical('could not connect to mobile carrier lookup web service')
  52.         return callback.error()
  53.  
  54.     url = 'http://validate.msg.yahoo.com/mobileno?intl=%s&version=%s' % (intl, version)
  55.     headers = {
  56.         'Cookie': yahoo.cookie_str,
  57.         'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5)',
  58.         'Cache-Control': 'no-cache' }
  59.     log.info('POSTing SMS carrier request to %s', url)
  60.     xmlstr = validate._to_xml(self_closing = False, pretty = False)
  61.     log.info(xmlstr)
  62.     post_xml(url, xmlstr, success = on_response, error = on_error, **headers)
  63.     success = '\n    HTTP/1.1 200 OK\n    Date: Fri, 04 May 2007 15:09:26 GMT\n    P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"\n    Content-Length: 140\n    Connection: close\n    Content-Type: text/html\n\n    <validate>\n      <mobile_no msisdn="17248406085">\n        <status>Valid</status>\n        <carrier>pcsms.us.verizon</carrier>\n      </mobile_no>\n    </validate>\n    '
  64.     error = '\n    HTTP/1.1 200 OK\n    Date: Fri, 04 May 2007 15:12:19 GMT\n    P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"\n    Content-Length: 117\n    Connection: close\n    Content-Type: text/html\n\n    <validate>\n      <mobile_no msisdn="12">\n        <status>Unknown</status>\n        <carrier></carrier>\n      </mobile_no>\n    </validate>\n    '
  65.  
  66. get_carrier = callsback(get_carrier)
  67.  
  68. def send_sms(yahoo, sms_number, message, callback = None):
  69.     
  70.     try:
  71.         if isinstance(message, unicode):
  72.             message = message.encode('utf-8')
  73.         
  74.         sms_number = format_smsnumber(sms_number)
  75.         
  76.         def on_carrier(carrier):
  77.             log.info('sending Yahoo SMS packet to %s on carrier %s', sms_number, carrier)
  78.             me = yahoo.self_buddy
  79.             if not me.remote_alias:
  80.                 pass
  81.             yahoo.send('sms_message', 'available', [
  82.                 'frombuddy',
  83.                 me.name,
  84.                 'sms_alias',
  85.                 me.name,
  86.                 'to',
  87.                 sms_number,
  88.                 'sms_carrier',
  89.                 carrier,
  90.                 'message',
  91.                 message])
  92.  
  93.         get_carrier(yahoo, sms_number, success = on_carrier, error = callback.error)
  94.     except:
  95.         print_exc()
  96.  
  97.     callback.success()
  98.  
  99. send_sms = callsback(send_sms)
  100.  
  101. def format_smsnumber(sms):
  102.     if len(sms) == 10:
  103.         return '1' + sms
  104.     
  105.     return sms
  106.  
  107. if __name__ == '__main__':
  108.     cookies = {
  109.         'Y': 'v=1&n=3lutd2l220eoo&l=a4l8dm0jj4hisqqv/o&p=m2l0e8v002000000&r=fr&lg=us&intl=us; path=/; domain=.yahoo.com',
  110.         'T': 'z=/V2OGB/bLPGB9ZlmrY27n5q&a=YAE&sk=DAAcD2qurh0ujr&d=YQFZQUUBb2sBWlcwLQF0aXABQldCb2lBAXp6AS9WMk9HQmdXQQ--; path=/; domain=.yahoo.com' }
  111.     headers = {
  112.         'Cookie': '; '.join([
  113.             cookies['Y'],
  114.             cookies['T']]),
  115.         'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5)',
  116.         'Cache-Control': 'no-cache' }
  117.     data = '<validate intl="us" version="8.1.0.209" qos="0"><mobile_no msisdn="17248406085"></mobile_no></validate>'
  118.     conn = httplib.HTTPConnection('validate.msg.yahoo.com', 80)
  119.     conn.set_debuglevel(10000)
  120.     conn.request('POST', '/mobileno?intl=us&version=8.1.0.209', data, headers)
  121.     resp = conn.getresponse()
  122.     print resp.status, resp.reason
  123.     if resp.status == 200:
  124.         print resp.read()
  125.     
  126.  
  127.